/***************************************************************************
 创建者：华磊
 开始时间：         : 2020.12.12
 copyright            : (C) 深圳市华友高科有限公司
 修改说明：（每次有修改就添加一条，带有 修改人，修改时间，修改描述）

 ***************************************************************************
 *   标签指令属性编辑视窗
*                                                                         *
 ***************************************************************************/
#ifndef LABELJMPDELEGATE_H
#define LABELJMPDELEGATE_H

#include "labeljmpdelegate_global.h"
#include "../LabelJmpView/labeljmpview.h"
#include "../LabelJmpView/progromlistview.h"
#include <QObject>
#include <QFileInfo>
#include <QFileDialog>
class CommunicateNormalDelegate;
class GlobalData;


/**
 * @brief The LabelJmpDelegate class　标签指令属性编辑视窗代理类
 */
class LABELJMPDELEGATESHARED_EXPORT LabelJmpDelegate : public QObject
{
    Q_OBJECT

public:
    LabelJmpDelegate(GlobalData *globalDataIn,CommunicateNormalDelegate *communicateNormalDelegateIn,
                     LabelJmpView * labelJmpViewIn,ProgromListView *progromListView,QWidget *parent = 0);

    /**
     * @brief initialView　初始化界面成员变量
     */
    void initialView();



public slots:
    /**
     * @brief selectLabelInstructionSlot　选择标签指令槽函数
     */
    void selectLabelInstructionSlot();
    /**
     * @brief selectJmpInstructionSlot　选择跳转指令槽函数
     */
    void selectJmpInstructionSlot();
    /**
     * @brief selectEndInstructionSlot　选择结束指令槽函数
     */
    void selectEndInstructionSlot();
    /**
     * @brief selectPauseInstructionSlot　选择暂停指令槽函数
     */
    void selectPauseInstructionSlot();
    /**
     * @brief selectAbortInstructionSlot　选择强制终止指令槽函数
     */
    void selectAbortInstructionSlot();
    /**
     * @brief selectCallInstructionSlot　选择调用指令槽函数
     */
    void selectCallInstructionSlot();
    /**
     * @brief selectRunInstructionSlot　选择开任务指令槽函数
     */
    void selectRunInstructionSlot();

    /**
     * @brief browseCallProgramSlot　浏览调用文件槽函数
     * @param callLocation　浏览路径
     */
    void browseCallProgramSlot(QString oldProgramNameIn);
    /**
     * @brief clearNoteSlot　清除指令注释槽函数
     */
    void clearNoteSlot();

    /**
     * @brief finishEditInstructionSlot　完成指令编辑槽函数
     */
    void finishEditInstructionSlot();

    /**
     * @brief showSelectFileName
     * @param fileName
     */
    void showSelectFileName(QString fileName);


private:
    CommunicateNormalDelegate *communicateNormalDelegate;
    GlobalData *globalData;
    LabelJmpView * labelJmpView;
    ProgromListView *progromListView;

};

#endif // LABELJMPDELEGATE_H
